home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / mikecom / casmhdr.h < prev    next >
Text File  |  1987-05-14  |  4KB  |  145 lines

  1. .xlist
  2.  
  3. ;**************************************************************************
  4. ; INCLUDE FILE FOR ALL 'ASM' MODULES FOR MICROSOFT 'C' PROGRAMS
  5. ;  sets up segments and defines common equates
  6. ;**************************************************************************
  7.  
  8. ;  Mike Dumdei,  6 Holly Lane,  Texarkana TX  75503
  9.  
  10. ;------- Memory model macros ----------------------------
  11. irp     cdmod, <MEDIUM,LARGE,HUGE>
  12.         ifdef   cdmod
  13.         FARCODE equ 1
  14.         endif
  15. endm
  16. irp     dtmod, <COMPACT,LARGE,HUGE>
  17.         ifdef   dtmod
  18.         FARDATA equ 1
  19.         endif
  20. endm
  21.  
  22. ;------ Define segments macro ---------------------------
  23. defseg  macro   farname
  24. ifdef FARCODE                   ;;---- f a r c o d e ----
  25. farname SEGMENT BYTE PUBLIC 'CODE'
  26. farname ENDS
  27. bTXT    equ     Byte Ptr farname:
  28. wTXT    equ     Word Ptr farname:
  29. ofTXT   equ     offset farname:
  30. TXT     equ     farname
  31. BOFST = 6
  32. else                            ;;---- n e a r c o d e ----
  33. _TEXT   SEGMENT BYTE PUBLIC 'CODE'
  34. _TEXT   ENDS
  35. bTXT    equ     Byte Ptr _TEXT:
  36. wTXT    equ     Word Ptr _TEXT:
  37. ofTXT   equ     offset _TEXT:
  38. TXT     equ     _TEXT
  39. BOFST = 4
  40. endif                           ;;---- f a r  &  n e a r ----
  41. _DATA   SEGMENT WORD PUBLIC 'DATA'
  42. _DATA   ENDS
  43. DGROUP  GROUP   _DATA
  44.         endm
  45.  
  46. ;------- Begin/End code segment macros ------------------
  47. begseg  macro   farname
  48. ifdef FARCODE
  49.         ASSUME  CS:farname, DS:DGROUP, SS:DGROUP
  50. farname segment
  51. else
  52.         ASSUME  CS:_TEXT, DS:DGROUP, SS:DGROUP
  53. _TEXT   segment
  54. endif
  55.         endm
  56.  
  57. endseg  macro   farname
  58. ifdef FARCODE
  59. farname ends
  60. else
  61. _TEXT   ends
  62. endif
  63.         endm
  64.  
  65. ;------- Procedure macros -------------------------------
  66. publicproc      macro   pname
  67.         public  pname
  68. ifdef FARCODE
  69. pname           proc    far
  70. else
  71. pname           proc    near
  72. endif
  73.         endm
  74.  
  75. localproc       macro   pname
  76. pname           proc    near
  77.         endm
  78.  
  79. ;------- Function entry and exit macros -----------------
  80. fstart  macro   req_bytes
  81.         push    bp              ;; sets up stack frame + if arg is given
  82.         mov     bp,sp           ;; does call to chkstk function to see
  83. ifnb    <req_bytes>             ;; if space is available
  84.         mov     ax,req_bytes    ;; IF USING __chkstk YOU MUST DECLARE IT AS
  85.         call    __chkstk        ;; AN EXTERNAL IN THE SOURCE THAT USES IT
  86. endif
  87.         push    di
  88.         push    si
  89.         endm
  90.  
  91. fend    macro
  92.         pop     si              ;; clears stack frame and exits to caller
  93.         pop     di
  94.         mov     sp,bp
  95.         pop     bp
  96.         ret
  97.         endm
  98.  
  99. ;------ Define external procedures/variables macros -----
  100. IMPORT_NEAR     macro   list
  101.         irp     x,<list>
  102.         extrn   x:near
  103.         endm
  104.         endm
  105. IMPORT_FAR      macro   list
  106.         irp     x,<list>
  107.         extrn   x:far
  108.         endm
  109.         endm
  110. IMPORT_BYTE     macro   list
  111.         irp     x,<list>
  112.         extrn   x:byte
  113.         endm
  114.         endm
  115. IMPORT_WORD     macro   list
  116.         irp     x,<list>
  117.         extrn   x:word
  118.         endm
  119.         endm
  120. IMPORT_ABS      macro   list
  121.         irp     x,<list>
  122.         extrn   x:abs
  123.         endm
  124.         endm
  125.  
  126. ;------- Useful equates -------------------------------
  127. bptr    equ     Byte Ptr
  128. wptr    equ     Word Ptr
  129. s       equ     short
  130. n       equ     not
  131. ofst    equ     offset
  132. bbp     equ     Byte Ptr [BP]
  133. wbp     equ     Word Ptr [BP]
  134. bbx     equ     Byte Ptr [BX]
  135. wbx     equ     Word Ptr [BX]
  136. bsi     equ     Byte Ptr [SI]
  137. wsi     equ     Word Ptr [SI]
  138. bdi     equ     Byte Ptr [DI]
  139. wdi     equ     Word Ptr [DI]
  140. bDG     equ     Byte Ptr DGROUP:
  141. wDG     equ     Word Ptr DGROUP:
  142. ofDG    equ     offset DGROUP:
  143. DG      equ     DGROUP
  144. .list
  145.